home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / bowling.arc / RECAP.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-07-12  |  9.1 KB  |  294 lines

  1. 10  REM PRINT WEEKLY RECAP SHEET    (RECAP)
  2. 12  REM Developed by William W. Klaproth,  Moraga Ca.  94556    September 1982
  3. 20  REM MASTER FILE DESCRIPTIONS FOR ALL BOWLING PROGRAMS
  4. 30  OPEN "B:TEAMS.HDR" AS #1 LEN = 64
  5. 40  FIELD #1, 2 AS TM$, 30 AS NAM$, 2 AS RCNT$, 2 AS GAM$, 4 AS PINS$, 2 AS AVG$, 2 AS HIG$, 2 AS HIS$, 4 AS PTSW$, 4 AS PTSL$, 2 AS B1ID$, 2 AS B2ID$, 2 AS B3ID$, 2 AS B4ID$, 2 AS B5ID$
  6. 50  FIELD #1, 2 AS HDRID$, 30 AS LEAGUE$, 2 AS WEEKS$, 2 AS TEAMS$, 4 AS FILLER$, 2 AS BWLPERTM$, 2 AS NXTID$, 2 AS HCPBASE$, 4 AS HCPPCNT$
  7. 60  OPEN "B:BOWLERS.HDR" AS #2 LEN = 64
  8. 70  FIELD #2, 2 AS BBO$, 30 AS BNAM$, 2 AS BRCNT$, 2 AS BGAM$, 4 AS BPINS$, 2 AS BAVG$, 2 AS BHIG$, 2 AS BHIS$, 2 AS BHCP$, 2 AS BHIGH$, 2 AS BHISH$, 2 AS BTM$,2 AS GAM2$, 2 AS SER5$, 2 AS SER6$,2 AS CURSER$,2 AS AVGLSTYR$
  9. 80  REM OPEN "B:TEAM.DET" AS #3 LEN = 16
  10. 90  REM FIELD #3,2 AS DTM$, 2 AS TMO$, 2 AS TDAY$, 2 AS TG1$, 2 AS TG2$, 2 AS TG3$, 2 AS TSER$, 2 AS DPTSW$
  11. 100  REM OPEN "B:BOWLER.DET" AS #4 LEN = 16
  12. 110  REM FIELD #4,2 AS DBO$, 2 AS BMO$, 2 AS BDAY$, 2 AS BG1$, 2 AS BG2$, 2 AS BG3$, 2 AS BSER$
  13. 120  CLS
  14. 130  PRINT "PRINT WEEKLY RECAP SHEET"
  15. 140  GET #1,1
  16. 150  TEAMS% = CVI(TEAMS$)
  17. 160  BOWLERS% = CVI(BWLPERTM$)
  18. 170  WEEKS% = CVI(WEEKS$)
  19. 180  NEXTID% = CVI(NXTID$)
  20. 190  DIM TM%(TEAMS%)
  21. 200  DIM NAM$(TEAMS%)
  22. 210  DIM GAM%(TEAMS%)
  23. 220  DIM PINS(TEAMS%)
  24. 230  DIM AVG%(TEAMS%)
  25. 240  DIM HIG%(TEAMS%)
  26. 250  DIM HIS%(TEAMS%)
  27. 260  DIM PTSW(TEAMS%)
  28. 270  DIM PTSL(TEAMS%)
  29. 280  REM BOWLER SCORES TABLES
  30. 290  DIM BONUM%(NEXTID% - 1)     'TABLE FOR HI GAME
  31. 300  DIM HIGAME%(NEXTID% - 1)    ' *
  32. 310  DIM BONUM2%(NEXTID% - 1)     'TABLE FOR HI SERIES
  33. 320  DIM HISERIES%(NEXTID% - 1)  ' *
  34. 330  D% = 0       'SET START OF SCORES TABLE
  35. 340  LPRINT "RHEEM VALLEY BOWL          ";LEAGUE$;SPC(10);DATE$
  36. 350  LPRINT " "
  37. 360  DIM TABTM%(TEAMS%)
  38. 370  DIM TABPTS#(TEAMS%)
  39. 380  FOR T% = 1 TO TEAMS%
  40. 390  GET #1, (T% + 1)
  41. 400  TM%(T%) = CVI(TM$)
  42. 410  NAM$(T%) = NAM$
  43. 420  GAM%(T%) = CVI(GAM$)
  44. 430  PINS(T%) = CVS(PINS$)
  45. 440  AVG%(T%) = CVI(AVG$)
  46. 450  HIG%(T%) = CVI(HIG$)
  47. 460  HIS%(T%) = CVI(HIS$)
  48. 470  PTSW(T%) = CVS(PTSW$)
  49. 480  PTSL(T%) = CVS(PTSL$)
  50. 490  TABTM%(T%) = TM%(T%)                          'LOAD SORT TABLE
  51. 500  TABPTS#(T%) = PTSW(T%) * 1E+06 + PINS(T%)   ' *
  52. 510  NEXT T%
  53. 520  REM SORT TEAMS BY POINTS WON
  54. 530  PRINT "SORTING TEAMS BY POINTS WON"
  55. 540  M% = TEAMS%: LAST$ = " "
  56. 550  M% = M% / 2
  57. 560  IF LAST$ = "Y" GOTO 700
  58. 570  IF M% = 1 THEN LAST$ = "Y"
  59. 580  K% = TEAMS% - M%: J% = 1
  60. 590  I% = J%
  61. 600  L% = I% + M%
  62. 610  IF TABPTS#(I%) <= TABPTS#(L%) GOTO 670
  63. 620  TEMPPTS# = TABPTS#(I%): TEMPTM% = TABTM%(I%)
  64. 630  TABPTS#(I%) = TABPTS#(L%): TABTM%(I%) = TABTM%(L%)
  65. 640  TABPTS#(L%) = TEMPPTS#: TABTM%(L%) = TEMPTM%
  66. 650  I% = I% - M%
  67. 660  IF I% > 0 GOTO 600
  68. 670  J% = J% + 1
  69. 680  IF J% > K% GOTO 550 ELSE GOTO 590
  70. 690  REM END OF INTERNAL SORT ROUTINE
  71. 700  PRINT "PRINTING TEAM STANDINGS"
  72. 710  LPRINT "PLACE TEAM                            WON   LOST   PINS   GAM  AVG  HIG  HIS"
  73. 720  LPRINT "----- -----                           ---   ----   ----   ---  ---  ---  ---"
  74. 730  PLACE% = 1
  75. 740  FOR PL% = TEAMS% TO 1 STEP -1
  76. 750  T% = TABTM%(PL%)
  77. 760  LPRINT USING "  ##  ";PLACE%;
  78. 770  LPRINT NAM$(T%);
  79. 780  LPRINT USING "###.#  ";PTSW(T%),PTSL(T%);
  80. 790  LPRINT USING "#####  ";PINS(T%);
  81. 800  LPRINT USING " ### ";GAM%(T%);
  82. 810  LPRINT USING "#### ";AVG%(T%),HIG%(T%),HIS%(T%)
  83. 820  PLACE% = PLACE% + 1
  84. 830  NEXT PL%
  85. 840  LPRINT "*****************************************************************************"
  86. 850  PRINT "PRINTING BOWLER RECAP"
  87. 860  LPRINT "TEAM NAME                           SER   PINS GMS  AVG  HIG  HIS 200 500 600"
  88. 870  LPRINT "---- -----                          ---   ---- ---  ---  ---  --- --- --- ---"
  89. 880  FOR T% = 1 TO TEAMS%
  90. 890  GET 1, (T% + 1)
  91. 900  BID%(1) = CVI(B1ID$)
  92. 910  BID%(2) = CVI(B2ID$)
  93. 920  BID%(3) = CVI(B3ID$)
  94. 930  BID%(4) = CVI(B4ID$)
  95. 940  BID%(5) = CVI(B5ID$)
  96. 950  FOR B% = 1 TO BOWLERS%
  97. 960  GET #2,BID%(B%)
  98. 970  IF B% = 1 THEN LPRINT USING " ##  ";T%;
  99. 980  IF B% > 1 THEN LPRINT "     ";
  100. 990  LPRINT BNAM$;
  101. 1000  CURSER% = CVI(CURSER$)
  102. 1010  IF CURSER% > 50 THEN GOTO 1040 ELSE LPRINT " A-";
  103. 1020  LPRINT USING "# ";CURSER%;
  104. 1030  GOTO 1050
  105. 1040  LPRINT USING " ### ";CURSER%;
  106. 1050  LPRINT USING " ##### ";CVS(BPINS$);
  107. 1060  LPRINT USING "### ";CVI(BGAM$);
  108. 1070  LPRINT USING " ### ";CVI(BAVG$),CVI(BHIG$),CVI(BHIS$);
  109. 1080  GAM2% = CVI(GAM2$): SER5% = CVI(SER5$): SER6% = CVI(SER6$)
  110. 1090  IF GAM2% = 0 THEN LPRINT SPC(4) ELSE LPRINT USING "### ";CVI(GAM2$);
  111. 1100  IF SER5% = 0 THEN LPRINT SPC(4) ELSE LPRINT USING "### ";CVI(SER5$);
  112. 1110  IF SER6% > 0 THEN LPRINT USING "### ";CVI(SER6$) ELSE LPRINT SPC(6)
  113. 1120  D% = D% + 1
  114. 1130  BONUM%(D%) = CVI(BBO$)      'MOVE SCORES TO TABLE FOR SORTING
  115. 1140  HIGAME%(D%) = CVI(BHIG$)    ' *
  116. 1150  BONUM2%(D%) = BONUM%(D%)    ' *
  117. 1160  HISERIES%(D%) = CVI(BHIS$)  ' *
  118. 1170  NEXT B%
  119. 1180  NEXT T%
  120. 1190  LPRINT "*****************************************************************************"
  121. 1200  PRINT "PRINTING SUBSTITUTE RECAP"
  122. 1210  LPRINT "SUBS"
  123. 1220  FOR S% = 1 TO (NEXTID% - 1)
  124. 1230  GET #2,S%
  125. 1240  IF CVI(BTM$) > 0 GOTO 1370
  126. 1250  LPRINT "  ";
  127. 1260  LPRINT USING "## ";CVI(BBO$);
  128. 1270  LPRINT BNAM$;
  129. 1280  CURSER% = CVI(CURSER$)
  130. 1290  IF CURSER% < 50 THEN LPRINT SPC(5) ELSE LPRINT USING " ### ";CURSER%;
  131. 1300  LPRINT USING " ##### ";CVS(BPINS$);
  132. 1310  LPRINT USING "### ";CVI(BGAM$);
  133. 1320  LPRINT USING " ### ";CVI(BAVG$),CVI(BHIG$),CVI(BHIS$);
  134. 1330  GAM2% = CVI(GAM2$): SER5% = CVI(SER5$): SER6% = CVI(SER6$)
  135. 1340  IF GAM2% = 0 THEN LPRINT SPC(4) ELSE LPRINT USING "### ";CVI(GAM2$);
  136. 1350  IF SER5% = 0 THEN LPRINT SPC(4) ELSE LPRINT USING "### ";CVI(SER5$);
  137. 1360  IF SER6% > 0 THEN LPRINT USING "### ";CVI(SER6$) ELSE LPRINT SPC(6)
  138. 1370  NEXT S%
  139. 1380  LPRINT CHR$(12)
  140. 1390  LPRINT " "
  141. 1400  LPRINT "     HIGH GAME                       HIGH SERIES"
  142. 1410  LPRINT "     ---------                       -----------"
  143. 1420  REM SORT HIGAME SCORES
  144. 1430  PRINT "SORTING BOWLER HIGAME SCORES"
  145. 1440  M% = NEXTID% - 1: LAST$ = " "
  146. 1450  M% = M% / 2
  147. 1460  IF LAST$ = "Y" GOTO 1610
  148. 1470  IF M% = 1 THEN LAST$ = "Y"
  149. 1480  K% = (NEXTID% - 1) - M%: J% = 1
  150. 1490  I% = J%
  151. 1500  L% = I% + M%
  152. 1510  IF HIGAME%(I%) <= HIGAME%(L%) GOTO 1570
  153. 1520  TEMPGAME% = HIGAME%(I%): TEMPBO% = BONUM%(I%)
  154. 1530  HIGAME%(I%) = HIGAME%(L%): BONUM%(I%) = BONUM%(L%)
  155. 1540  HIGAME%(L%) = TEMPGAME%: BONUM%(L%) = TEMPBO%
  156. 1550  I% = I% - M%
  157. 1560  IF I% > 0 GOTO 1500
  158. 1570  J% = J% + 1
  159. 1580  IF J% > K% GOTO 1450 ELSE GOTO 1490
  160. 1590  REM END OF HIGAME SORT ROUTINE
  161. 1600  REM SORT HISERIES SCORES
  162. 1610  PRINT "SORTING BOWLER HISERIES SCORES"
  163. 1620  M% = NEXTID% - 1: LAST$ = " "
  164. 1630  M% = M% / 2
  165. 1640  IF LAST$ = "Y" GOTO 1780
  166. 1650  IF M% = 1 THEN LAST$ = "Y"
  167. 1660  K% = (NEXTID% - 1) - M%: J% = 1
  168. 1670  I% = J%
  169. 1680  L% = I% + M%
  170. 1690  IF HISERIES%(I%) <= HISERIES%(L%) GOTO 1750
  171. 1700  TEMPSERIES% = HISERIES%(I%): TEMPBO% = BONUM2%(I%)
  172. 1710  HISERIES%(I%) = HISERIES%(L%): BONUM2%(I%) = BONUM2%(L%)
  173. 1720  HISERIES%(L%) = TEMPSERIES%: BONUM2%(L%) = TEMPBO%
  174. 1730  I% = I% - M%
  175. 1740  IF I% > 0 GOTO 1680
  176. 1750  J% = J% + 1
  177. 1760  IF J% > K% GOTO 1630 ELSE GOTO 1670
  178. 1770  REM END OF HISERIES SORT ROUTINE
  179. 1780  BEEP
  180. 1790  INPUT "HOW MANY LINES OF HIGH SCORES DO YOU WISH TO PRINT:";LINES%
  181. 1800  LIMIT% = (NEXTID% - LINES%)
  182. 1810  PRINT "PRINTING LEAGUE HIGH SCORES"
  183. 1820  FOR PL% = (NEXTID% - 1) TO LIMIT% STEP -1
  184. 1830  GET #2,BONUM%(PL%)
  185. 1840  HIGNAM$ = LEFT$(BNAM$,20)
  186. 1850  GET #2,BONUM2%(PL%)
  187. 1860  LPRINT SPC(5);HIGNAM$;
  188. 1870  LPRINT USING "  ###";HIGAME%(PL%);
  189. 1880  LPRINT SPC(7);LEFT$(BNAM$,20);
  190. 1890  LPRINT USING "  ###";HISERIES%(PL%)
  191. 1900  NEXT PL%
  192. 1910  LPRINT " "
  193. 1920  LPRINT "                    HI LITES LAST WEEK"
  194. 1930  LPRINT "                    ------------------"
  195. 1940  LPRINT " "
  196. 1950  REM READ HILITE RECORDS FROM FILE #5
  197. 1960  L% = NEXTID%
  198. 1970  DIM HBNO%(L%)
  199. 1980  DIM HG1%(L%)
  200. 1990  DIM HG2%(L%)
  201. 2000  DIM HG3%(L%)
  202. 2010  DIM HSER%(L%)
  203. 2020  DIM FLG1$(L%)
  204. 2030  DIM FLG2$(L%)
  205. 2040  DIM FLG3$(L%)
  206. 2050  DIM FLGS$(L%)
  207. 2060  DIM HCNT%(L%)
  208. 2070  DIM SCOR%(4)
  209. 2080  OPEN "B:HISCORES.DET" AS #5 LEN = 16
  210. 2090  FIELD #5, 2 AS HBNO$, 2 AS HG1$, 2 AS HG2$, 2 AS HG3$, 2 AS HSER$, 1 AS HFLG1$, 1 AS HFLG2$, 1 AS HFLG3$, 1 AS HFLGS$, 2 AS HCNT$
  211. 2100  PRINT "PROCESSING LAST WEEK'S HILITES"
  212. 2110  HILITE% = 0
  213. 2120  FOR T% = 1 TO L%
  214. 2130  GET #5,T%
  215. 2140  HG1%(T%) = CVI(HG1$)
  216. 2150  IF HG1%(T%) = 9999 GOTO  2210
  217. 2160  HBNO%(T%) = CVI(HBNO$): HG2%(T%) = CVI(HG2$)
  218. 2170  HG3%(T%) = CVI(HG3$): HSER%(T%) = CVI(HSER$)
  219. 2180  FLG1$(T%) = HFLG1$: FLG2$(T%) = HFLG2$: FLG3$(T%) = HFLG3$: FLGS$(T%) = HFLGS$: HCNT%(T%) = CVI(HCNT$)
  220. 2190  IF HCNT%(T%) > 0 THEN HILITE% = HILITE% + 1
  221. 2200  NEXT T%
  222. 2210  PRSW$ = "L"
  223. 2220  FOR V% = 1 TO L%
  224. 2230  IF HG1%(V%) = 9999 GOTO 2470
  225. 2240  IF HCNT%(V%) = 0 GOTO 2450
  226. 2250  GET #2,HBNO%(V%)
  227. 2260  U% = 1
  228. 2270  IF FLG1$(V%) = "1" THEN SCOR%(U%) = HG1%(V%):U%=U%+1
  229. 2280  IF FLG2$(V%) = "1" THEN SCOR%(U%) = HG2%(V%):U%=U%+1
  230. 2290  IF FLG3$(V%) = "1" THEN SCOR%(U%) = HG3%(V%):U%=U%+1
  231. 2300  IF FLGS$(V%) = "1" THEN SCOR%(U%) = HSER%(V%):U%=U%+1
  232. 2310  IF U% = 1 GOTO 2440
  233. 2320  LPRINT LEFT$(BNAM$,20);
  234. 2330  ON U% GOTO 2440,2340,2370,2400,2430
  235. 2340  LPRINT USING "### ";SCOR%(1);
  236. 2350  LPRINT "            ";
  237. 2360  GOTO 2440
  238. 2370  LPRINT USING "### ";SCOR%(1),SCOR%(2);
  239. 2380  LPRINT "        ";
  240. 2390  GOTO 2440
  241. 2400  LPRINT USING "### ";SCOR%(1),SCOR%(2),SCOR%(3);
  242. 2410  LPRINT "    ";
  243. 2420  GOTO 2440
  244. 2430  LPRINT USING "### ";SCOR%(1),SCOR%(2),SCOR%(3),SCOR%(4);
  245. 2440  IF PRSW$ = "R" THEN LPRINT " "
  246. 2450  IF PRSW$ = "R" THEN PRSW$ = "L" ELSE PRSW$ = "R"
  247. 2460  NEXT V%
  248. 2470  LPRINT " ": IF PRSW$ = "R" THEN LPRINT " "
  249. 2480  DIM MESG$(7)
  250. 2490  K% = 1
  251. 2500  LINE INPUT "ENTER MESSAGES:";MESG$(K%)
  252. 2510  TMSG$ = MESG$(K%)
  253. 2520  FIRST4$ = LEFT$(TMSG$,4)
  254. 2530  IF FIRST4$ = "*END" OR FIRST4$ = "*end" GOTO 2570
  255. 2540  IF K% = 7 GOTO 2580
  256. 2550  K% = K% + 1
  257. 2560  GOTO 2500
  258. 2570  K% = K% - 1
  259. 2580  LPRINT " "
  260. 2590  INPUT "ENTER NEXT BOWLING DATE (MM,DD): ",SMO%,SDY%
  261. 2600  IF SMO% = 0 GOTO 2860
  262. 2610  OPEN "B:SCHEDULE.DET" AS #3 LEN = 75
  263. 2620  FIELD #3, 1 AS STATUS$, 2 AS WEEK$, 2 AS SMO$, 2 AS SDY$, 68 AS PRLINE$
  264. 2630  GET #3,1
  265. 2640  LPRINT "DATE\ LANE ";PRLINE$
  266. 2650  LPRINT "-----    ";
  267. 2660  FOR LN% = 1 TO TEAMS% / 2
  268. 2670  LPRINT "  -----";
  269. 2680  NEXT LN%
  270. 2690  LPRINT " "
  271. 2700  FOR L% = 2 TO 40
  272. 2710  GET #3,L%
  273. 2720  IF CVI(SMO$) = 99 GOTO 2750
  274. 2730  IF SMO% = CVI(SMO$) THEN IF SDY% = CVI(SDY$) GOTO 2770 ELSE GOTO 2740
  275. 2740  NEXT L%
  276. 2750  PRINT "**ERROR - NO MATCH FOUND IN SCHEDULE FILE"
  277. 2760  STOP
  278. 2770  FOR M% = L% TO (L% + 2)
  279. 2780  GET #3, M%
  280. 2790  IF CVI(SMO$) = 99 GOTO 2850
  281. 2800  LPRINT USING "##";CVI(SMO$);
  282. 2810  LPRINT USING "/##";CVI(SDY$);
  283. 2820  LPRINT SPC(6);
  284. 2830  LPRINT PRLINE$
  285. 2840  NEXT M%
  286. 2850  LPRINT " "
  287. 2860  FOR L% = 1 TO K%
  288. 2870  LPRINT MESG$(L%)
  289. 2880  NEXT L%
  290. 2890  LPRINT CHR$(12)
  291. 2900  PRINT "Print Processing Completed - Returning to MENU"
  292. 2910  CLOSE
  293. 2920  RUN "A:MENU"
  294.